public class Solution {
    public int compress(char[] chars) {
        int n = chars.length;
        int write = 0,left = 0;
        for (int read = 0; read < n; read++){
            if (read == n-1 || chars[read] != chars[read+1]){
                chars[write++] = chars[read];
                int num = read - left + 1;
                if (num > 1){
                    int anchor = write;
                    while (num > 0){
                        chars[write++] = (char) (num % 10 + '0');
                        num /= 10;
                    }
                    reverse(chars,anchor,write-1);
                }
                left = read + 1 ;
            }
        }
    return write;

    }
    private void reverse(char[] chars, int start, int end){
        while (start < end){
            char temp = chars[start];
            chars[start] = chars[end];
            chars[end] = temp;
            start++;
            end--;
        }
    }
}
